It is generally recognized that computers are pervasive throughout the vast majority of American society and business. It is also generally known that computers typically utilize code (i.e., machine code) in the form of software or firmware to process data and perform a myriad of function that computers are used for today. Typically, computer programmers utilize a computer language to generate code. Today, there are a multitude of computer languages available in a variety of broadly defined classifications. One such classification of computer languages is object-oriented languages (“OOLs”) which are used to create object-oriented programs (“OOPs”).
Generally, object-oriented programming encompasses a group of programming languages and techniques based on the concept of an “object”. An object is defined by a set of routines, called “methods”. For example, an object of a certain class may be configured to perform actions, e.g., printing data generated by the object, creating a new instance of itself, etc. Each object operates as a separate independent piece or module of an application. Additionally, each object has its own values for the variables belonging to its class. Operations performed upon the variables can only be performed by the methods of a particular class of objects. Thus, the interface between objects is well defined.
The methods serve as an interface for a class or family of objects. Classes may be defined by a position in a “class hierarchy”. Methods or code in one class may be passed down the hierarchy to a subclass or inherited from a superclass in a structure called “inheritance”. In this regard, many modem OOLs include an extensive object library of pre-made classes and a programming environment to facilitate application construction. This suite of applications, header files, object libraries, etc. is described as a software developer's kit (“SDK”) or program developer's kit (“PDK”).
While the structure of the OOLs and various structured languages, such as C, allows for exquisite and elegant control of data and memory resources, it does have a number of disadvantages. One particular disadvantage is that if an application is created utilizing more than one version of an SDK, the application may generate errors that are difficult to interpret. For example, if two modules of an application are created by programmers utilizing different versions of a given SDK, relatively minor corruptions (e.g., corruptions that do not cause an immediate fault) of data may occur. These “minor” problems may accumulate for some time until they cause a fault or are otherwise noticed.